home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-04-15 | 68.5 KB | 1,888 lines |
-
- SWI-Prolog ChangeLog
- ====================
-
- VERSION 2.9.10
- ==============
-
- * ADDED: dup_stream/2 to copy stream handles.
-
- * ADDED: Allow for specifying stream alias-name to PL_open_stream(),
- also used by open_null_stream/1, so open_null_stream(null) will make
- `null' an aliased null-stream.
-
- * UPDATED: Some parts of the documentation.
-
- * FIXED: Control-C handling on some platforms (notably Solaris 2.5).
-
- * ADDED: options close_on_abort and buffer to open/4.
-
- * FIXED: write(not (a,b)) ommited the space and wrote not(a,b). Thanks
- to Stefan Mueller.
-
- VERSION 2.9.9
- =============
-
- * FIXED: Portability problems for Solaris 2.6.
-
- * FIXED: throwing Prolog exceptions on `Broken Pipe' in flush/0 and
- flush_output/1.
-
- * FIXED: detection of limit on datasize on SGI platform. Thanks to
- Marcello Balduccini.
-
- * FIXED: Possibility of a crash in Symbols(), notably affecting embedded
- systems (at startup). Thanks to Anton Eliens.
-
- The 4 bugs below were reported by Luc Van Oostenryck. Thanks.
-
- * FIXED: concat_atom/3 if the separator is not an atom.
-
- * FIXED: arg(0, Term, Arg) to fail
-
- * FIXED: atom_char(abc, X) to raise an instantiation fault if the length
- of the atom is not 1. Also, return integers in the range [1..255] instead
- of [-128..127].
-
- * FIXED: -0xff is now read as -255. Not sure if -(255) would not be a
- better idea!?
-
- VERSION 2.9.8
- =============
-
- * WIN32: Replaced various C runtime functions by their native Win32
- versions.
-
- * FIXED: Calling module transparent predicates from the outer foreign
- context using context module NULL to call in module "user", rather than
- in the definition module of the predicate. Found by Stephane Berhault.
-
- * FIXED: Early switch off the tracer after an abort to avoid tracing
- the hooks.
-
- * ADDED: explain/1 reporting references to undefined predicates (i.e. which
- clauses reference the undefined predicate). Also explain/1 reporting
- references to XPCE methods.
-
- * FIXED: explain/1 reporting non-existing references to compound terms.
-
- VERSION 2.9.7
- =============
-
- * FIXED: avoid some warnings to get clean compilation on GCC 2.8.0.
-
- * FIXED: detection of discontiguous predicates (avoids false alarm).
-
- * ADDED: Predicate definition for (*->)/2, mainly to allow for testing
- for its existence and avoid redefinition.
-
- * ADDED: Options to qsave_program/2 may be specified as Name(Value)
- or Name = Value.
-
- * FIXED: `map' option of qsave_program/2.
-
- * FIXED: handling of dynamic predicates import/export by
- qsave_program/[1,2]. found by Lourens van der Meij.
-
- * PORT: fixed pl-load.c for systems supporting the ELF dynamic load
- functions, but not RTLD_LAZY (FreeBSD?) Lost the name of the guy
- pointing me to this problem. Thanks anyway!
-
- * FIXED: handling of a functor as key for recorded and frieds, found by
- Lourens van der Meij.
-
- * FIXED: current_stream/3 if a current stream refers to a pipe. Found
- by Robert van Engelen.
-
- * FIXED: dereferencing symbolic link of argv[0] to find the `real'
- symbol file. Reported by Milan Zamazal, where this problem caused
- a crash when running SWI-Prolog using M-x run-prolog under Emacs.
-
- VERSION 2.9.6
- =============
-
- * MODIFIED: list_to_set/2 retains the first, rather then the last
- occurrence of duplicate members to the set.
-
- * FIXED: flag/3 using floating-point numbers for machines that cannot
- address doubles on 4-byte alignment (most RISC processors).
-
- * FIXED: foreign-reference handling of exception terms, causing garbage
- collection problems. Reported by Robert van Engelen.
-
- * PORT: improved detection and placement of mmap()-ed stacks (Unix sparse
- stack-management) with help of Marcello Balduccini.
-
- * FIXED: clause/3 to add/remove predicate reference-count while holding
- a choicepoint to the predicate. Reported by Marcello Balduccini.
-
- * ADDED: -c flag to plld to turn it into `plcc', just compiling .c or
- .cc files. Thanks to Marcello Balduccini.
-
- * MODIFIED: write/1 and friends now only insert spaces before and
- after operators if these are required to be a valid term for read/1.
- The only exception is ,/2, which is written using a space after the
- symbol. NOTE: foreign packages including <SWI-Stream.h> need
- to be recompiled!!!
-
- * FIXED: current_predicate/2 not consider abolished predicates that
- still exist as `current', so current_predicate(_, Goal), Goal is
- guaranteed not to raise an exception on Goal. Should fix recent
- reconsult problems in XPCE.
-
- * ADDED: user:message_hook/3 hook for print_message/2 (provisional).
-
- * MODIFIED: Hooks installed by PL_initialise_hook() are called *before*
- the saved-state is loaded, but after the heap is initialised. This
- implies only foreign predicates may be called from this hook now.
-
- * FIXED: testing of write-permissions for the library index for
- make/0.
-
- * MODIFIED: Toplevel queries are now read from user_input, rather
- than from the current input stream.
-
- * ADDED: feature(history, Depth). If 0, no history and no history-prompt
- are provided. This is the default if feature(readline, true) succeeds.
-
- * FIXED: set_feature(Name, Integer)
-
- * FIXED: chdir/absolute_file_name problem, reported by Machiel Jansen.
- Thanks.
-
- * FIXED: erase/1 on records referenced by recorded/3 choicepoints. Thanks
- to Robert van Engelen.
-
- * FIXED: Reference direction in recorded/3 (also used by findall/3 and
- friends).
-
- * FIXED: Removed various warnings for SunSoft cc compiler. Fixed
- one error reported by this compiler.
-
- * FIXED: Cite references in online documentation. Modified/Cleaned
- man/plindex.pl for this. Fixed a few typos.
-
-
- VERSION 2.9.5
- =============
-
- * FIXED: dwim_predicate to deal properly with default modules.
-
- * FIXED online manual not to use overstrike by default. See manual
- for details. XPCE requires patched prolog/lib/swi_help.pl to work
- properly with this version.
-
- * FIXED: plld for handling -l<lib> correctly in the Unix version, and
- automatically deleting temporary .exp files in Win32.
-
- * FIXED important fix returning address of local variable, found by
- Jean Daniel Fekete. Thanks.
-
-
- VERSION 2.9.4
- =============
-
- * FIXED: Various references to the variable stacks for systems requiring
- the stack-shifter. Thanks to Michirou Yabuki for reporting.
-
- * FIXED: recorded database (and findall/3, bagof/3, setof/3 store)
- handling of strings. After retrieval, the string's indirect header
- was incorrect, making unification and equivalence fail. Thanks to
- Andrew Dadakow for providing me with a simple program illustrating
- the problem.
-
- VERSION 2.9.3
- =============
-
- * ADDED: (Simple) support for exceptions in the GUI-tracer.
-
- * MODIFIED: PL_extensions array now needs to be explicitely registered
- using PL_register_extensions() for compatibility with Win32. Documented
- PL_register_extensions().
-
- * FIXED: print/1 to include the `quoted' option as it used to before
- 2.9.0. Thanks to Sam Waugh for noting.
-
- * NEW: plld is now written in C, and adapted for usage on Windows-NT
- and Windows '95. The latter is incomplete, but useful for creating
- embedded Win32 console applications. The old plld is available as
- plld.sh in the source distribution.
-
- * FIXED: PL_register_foreign() now declares the function-pointer as
- a void * for C++ code, so it may be used with C++.
-
- * MODIFIED: tmp_file/2 now returns the canonical filename on
- Windows platforms (i.e. c:/temp/base<n>, rather then C:\TEMP\base<n>).
- use prolog_to_os_filename/2 to convert between the two formats.
-
- * FIXED: catch/3 for proper continuation if the recovery goal
- succeeds.
-
- * FIXED: definition of ulong on some platforms for the new pl-global.h
- module.
-
-
- VERSION 2.9.2
- =============
-
- * CLEANUP: Removed various unreachable statements reported by the
- SGI native compiler.
-
- * FIXED: Unresolved message for S__fupdatefilepos() using native
- SGI compiler, which does not emit code for inline functions.
-
- * FIXED: diagnosis of `discontiguous' and `redefined' predicates
- while the predicate is reconsulted while it is running.
-
- * FIXED: Posibility of calling alloca(0) in pl-rec.c, spotted by
- Tamas Laufer. Should fix SCO Unix version.
-
- * FIXED: absolute_file_name/3, generation of multiple solutions:
- avoid regenerating the same solution. Caused make/0 to slow down
- more and more.
-
- * IMPLEMENTATION: Partial preparation for multi-threading. Removed
- lots of unnecessary global variables and moved most of the remaining
- ones into three structures defined in the new file pl-global.h.
- Read-only global data is now declared `const', putting it into
- shared memory on good machines/compilers. As a result, SWI-Prolog
- is a little smaller and faster.
-
- Still need to get rid of the remaining global variables and need
- to embrace all heap-operations to prepare them for the use with
- mutexes.
-
- * FIXED: trace-interception calling on fail-port, causing the GUI
- tracer to crash on some ocasions.
-
- * DELETED: Source file pl-dump.c, implementing save/1, restore/1
- and save_program/1. These predicates only worked on a few
- platforms anyway. qsave_program is now the only (and portable)
- saved-state mechanism.
-
- * IMPROVED: Removed limit on number of user-defined arithmetic
- functions.
-
- * IMPROVED: Format ~s accepts both a list of ASCII chars or a
- string (see string/1) object. Thanks to Peter Ludeman.
-
-
- VERSION 2.9.1
- =============
-
- * FIXED: auto-detection of -export-dynamic in favour of -rdynamic
- (GNU-ld based systems using ELF binary format not supporting
- -rdynamic, e.g. Solaris using gcc with GNU-ld). Thanks to
- Volker Weber.
-
- * FIXED: mmap configuration issues, with thanks to Daniel Pun.
-
- * FIXED: some changes to the Makefile(.in) and configure for portability,
- by Joel Faedi.
-
- * FIXED: wouldBindProcedure(), used by $xr_member, used by the explain
- facility. Could crash.
-
-
- VERSION 2.9.0
- =============
-
- * ADDED/MODIFIED: The interface to PL_open_query() has changed.
- The debug argument is replaced by a bitwise or'ed flags argument.
- The values FALSE and TRUE have their familiar meaning, making old
- code using these constants compatible. Non-zero values other than
- TRUE (1) will be interpreted different.
-
- * DELETED: display/[1,2] and displayq/[1,2]. Added emulation into
- library(backcomp).
-
- * ADDED: ISO/Quintus compliant write_canonical/[1,2].
-
- * FIXED: recorded database bug for very large terms.
-
- * ADDED: Lots of exception codes. Roughly, file i/o, external program
- invocation and arithmetic now use exceptions.
-
- * IMPROVED: write/1 and friends now check the return code of the
- low-level I/O functions and fail with exception on read/write
- errors.
-
- * REMOVED: $print/2. Doesn't appear to be used anywhere.
-
- * ADDED: write_term/[2,3], ISO compliant
-
- * ADDED: ISO compliant exception handling using catch/3 and throw/1,
- including a C-interface for these (PL_throw() and PL_exception())
- Added exception port to the tracer.
-
- * ADDED: abolish/1, ISO compliant.
-
- * FIXED: A is "a" (list as abbreviation for a character).
-
-
- VERSION 2.8.7
- =============
-
- * FIXED: require/1 to be silent on already defined system predicates.
-
- * FIXED: passing ldflags in plld script.
-
- * CONFIG: Removed checking for -lelf if the system is not asked
- to configure old save/1.
-
- * CONFIG: Modified test/mmap.c to find out whether we should allocate
- from the top or base of the heap. Added TOPOFHEAP to config.h. Should
- fix Irix problems.
-
-
- VERSION 2.8.6
- =============
-
- * Included src/pl.1.in (new file, forgotten in the 2.8.5 release)
-
- * INSTALL: slightly more careful installation of the manpages and
- small problem in configure fixed.
-
-
- VERSION 2.8.5
- =============
-
- * MAN: Updated manual sources for a couple of recent changes, added
- support for generation of the help/1 database using new tools for
- nroff like generation of plain text from a LaTeX document. Generated
- all three formats of the manual: HTML, PostScript and plain text.
-
- * FIXED: Installation of the manual page for correct description of the
- pl -dump-runtime-variables.
-
- * ADDED: For machines using memory-mapped stacks (Linux, SunOs, Solaris,
- OSF/1 for example), added heap-size switch: -H. Default is 256Mbytes.
-
- Size switch now take optional 'm' (Mega), 'k' (Kilo, default) or 'b'
- (bytes): -L32m specifies 32 Mbytes local stack.
-
- * FIXED: print error message if heap allocation above prefect fit
- schema (>1024 bytes) fails (malloc() returns NULL). All allocation
- failures now call outOfCore().
-
- VERSION 2.8.4
- =============
-
- * FIXED: PL_{get,put,unify}_pointer() mapping of pointer to integer,
- to ensure all possible pointer values are restored properly.
-
- * CLEANUP: Removed various internal unused functions, changed
- functions to be local that were only called locally.
-
- * MODIFIED: Redesign of various parts of the system to get rid of
- terms living in the permanent heap. This modification allows the
- permanent heap (where malloc() operates) to grow unlimited (used to
- be 64 MB).
-
- + Records (recorda/3, recorded/3, erase/1) are no longer stored
- as copies of the global-terms, but instead as a form of compiled
- code, optimised for copying the object back to the runtime stacks.
-
- Records are also used by findall/3, setof/3 and bagof/3, and these
- predicates have thus been modified too. The interface between the
- C and Prolog part has changed, making old saved-states worthless.
- Old QLF files work properly.
-
- + Records are also used by the /f goal option of the tracer. The
- implementation of this has been changed drastically. The result
- is a lot faster while searching and a bug has been fixed.
-
- + loadXRc() in pl-wic.c has been modified not to store longs, doubles
- and string onto the heap. This is the desired behaviour anyway.
-
- + Feature storage changed to use a union type, rather then integers
- on the heap.
-
- + Variable analysis in the compiler now used TAG_ATOM|STG_GLOBAL,
- like records, to flag the analysed variables.
-
- + Temporary variable management in read/1 using the same trick.
-
- + Atoms are indexed over a global, resizable, array.
-
- GOOD THINGS
-
- + makeRef() now simply is makeRefLG().
-
- + Trail() is simplified a lot.
-
- + makePtr() (pl-gc.c) no longer deals with heap pointers
-
- VERSION 2.8.3
- =============
-
- * FIXED: Changed manual to talk about PL_atom_chars(), rather then
- PL_string_from_atom().
-
- * FIXED: oset_addel/3, thanks to Robert van Engelen for both the
- report and the patch.
-
- * FIXED: string_to_list(X, []).
-
- * FIXED: Order and unlinking shared objects. Now, all files are
- closed before unlinking any shared libraries. Shared libraries
- are unlinked explicitely only on non-Unix systems.
-
-
- VERSION 2.8.2
- =============
-
- * FIXED: GC/tracer for clauses holding string objects at particular
- places. Reported by Andrew Dadakow.
-
- * FIXED: Deleted old pl.mak, and added plwin.mak and plcon.mak for
- rebuilding the sources on Windows.
-
- * FIXED: Typo in the $write_on_* predicates, underlying sformat and
- swritef, causing a crash on > 1024 characters output. Thanks to
- Shane P. McCarron.
-
-
- VERSION 2.8.1
- =============
-
- * FIXED: DEC Alpha (64-bit): reading integers > 2**31-1. Configuration
- of mmap based sparse stack allocation to deal with the Alpha. Various
- warnings removed. Fixed test.pl to be aware of the Alpha where
- necessary (float-3 test).
-
- * FIXED: Garbage collection problem, occurring with a specific
- combination of call-back from C and choicepoint organisation
- in the callback environment.
-
- * FIXED: Tracer `retry <n>' (guitracer only) to take care of garbage
- collected choicepoints.
-
- * FIXED: initialisation of style_check defaults to specify
- singletons, long atoms and discontiguous clauses. NOTE: THIS MAY
- CAUSE WARNINGS ON OLD CODE.
-
- * ADDED: Several predicates for math in library(quintus).
-
- * FIXED: abolish/2 on active (running) predicates, not to remove the
- NEEDSCLAUSE_GC flag, so the clauses are actually removed if the
- predicates is finished. Thanks to Paulo Moura, author of LogTalk.
-
- * FIXED: PL_get_arg() when using -L0 -G0 (maximized stacks). Probably
- only breaks tracing code under these circumstances.
-
-
- VERSION 2.8.0
- =============
-
- * FIXED: `$qlf_info'/3 (always failed). Used by the development
- environment under construction.
-
- * RUNTIME SYSTEM: Made various of the debugger options conditional
- on whether or not the system is compiled as runtime system.
-
- * ADDED: more options to user:prolog_event_hook/1 for better
- interaction with the GUI tracer: possibility to `watch' a
- stack-frames end-of-lifetime.
-
- * FIXED: writeq('%') to write '%' rather then just %.
-
- * FIXED/MODIFIED: subterm_positions option of read to return the
- positions of possible surrounding braces for a term. Thus,
- reading (hello) now yields 0-6 rather then 1-5. This notably
- fixes the 'f' (finish) option in the GUI tracer to properly
- indicate the succeeded clause.
-
- * PORT: Configure detected tcgetattr()/tcsetattr() usage rather then
- ioctl(), fixing terminal interaction on OSF/1.
-
- * PORT: Fix in Makefile to make it work with some broken shells.
-
- * PORT: renamed I_POP virtual machine instruction to I_POPF, to avoid
- a conflict with system headers on some machines.
-
- * PORT: Added support for the 64-bit DEC Alpha processor (or, more
- in general made the code 64-bit clean). Tested on a DEC Alpha
- using OSF/1 4.0 and the native C-compiler. Should also work on
- GCC, but the local GCC installation appeared broken. With thanks
- to Bryan Sorrows for providing me with access to their machine.
- Exactly while I was working on the port, Martin Ostermann mailed
- me patches for running on the Alpha under Linux. Thanks for the
- couple of problems I missed!
-
- Remaining problems: can sparse memory management work on OSF/1?
- Currently, saved states are portable, but the limits on the Alpha
- are much larger. This should be fixed. Prolog machine words are
- 64 bits on the Alpha, doubling the stack-sizes and virtually
- removing all limits. In theory, it would also be possible to use
- ints (32-bit) for this. I have not checked this. It is not unlikely
- there are variables defined `int', where they should have been
- `long', truncating large numbers.
-
- * FIXED: globalAlloc() for allocations larger than a page on machines
- with sparse memory management, not handling stack-overflows as
- exceptions (Win32). Fixes handling of long string objects on these
- platforms.
-
- * FIXED: (GUI Tracer) Stopped `cut-port' from activating when in
- `leap' mode.
-
-
- VERSION 2.7.20
- ==============
-
- * ADDED: Documentation for expand_query/4 and expand_answer/2.
-
- * ADDED: call_with_depth_limit/3, to aid theorem provers.
-
- * ADDED: features 'unix' and 'windows' for these operating systems.
-
- Version 2.7.19
- ==============
-
- * FIXED: functor(X, name, -1), reported by Robert van Engelen. Thanks.
-
- * FIXED: :- format_predicate/2 handling of arguments.
-
- * ADDED: external "C" declaractions for SWI-Stream.h, so you can use this
- in C++ programs now.
-
- * FIXED: the function sign/1 for floating point numbers.
-
- Version 2.7.18
- ==============
-
- * ADDED: Directory html for a SWI-Prolog based latex2html translator.
- Very extensive example of using foreign code.
-
- * REMOVED: Lots of unused files from the source-distribution
-
- * WIN32: Removed the uxnt.dll library. This library is now a static
- library linked into libpl.lib, the SWI-Prolog kernel.
-
- * FIXED: Handling of -p alias=path:...: order of the arguments doesn't
- matter anymore and parsing of the path has been fixed.
-
- * MODIFIED: load_files/2, `silent' option inherits to loads triggerred
- from this one.
-
- * FIXED: Garbage collector error, causing a crash if the local
- and global stack together exceed 64 MB. Now, they can each
- be 64 MB and be allocated at arbitrary positions.
-
- * CHANGED: Default editor command is now <editor> "<file>", using
- double instead of single quotes. This fixes problems on Windows
- platforms.
-
- * ADDED: clause_property(+Ref, ?erased), to support the debugger
- reporting about running modified clauses.
-
- * FIXED: current_functor(+Name, +Arity). Reported by Stefan Wimmel.
- Thanks.
-
- Version 2.7.17
- ==============
-
- * MODIFIED: the `debug' argument to PL_open_query() now really stops
- the debugger operating inside the called goal, also if an error
- arrises.
-
- * PORT: Sgi/Irix headers configuration and detection of alignment
- restrictions on doubles.
-
- * FIXED: Better operator priority checking, making a :- b :- c illegal
- syntax, as it should be. Also improved the warning issued.
-
- * FIXED: Removes MAX_TERM_NESTING from read.pl, previously limiting
- the complexity of terms that could be read. The new version of
- read requires significantly less (C-) stack and can handle
- much more deeply nested terms.
-
- * FIXED: term_to_atom(+Term, -Atom) on machines with dynamic stacks,
- but no exception based expansion (PC version).
-
- * FIXED: Sopenmen() stream functions (was not used before). This
- is now used by tellString() and toldString(), who now have a
- different interface. These functions are used by term_to_atom/2,
- and format/[1-3].
-
-
- Version 2.7.16
- ==============
-
- * FIXED: Various minor issues in the Makefiles and configure for
- generating a runtime version. Error message if the runtime
- system cannot find its state.
-
- * FIXED: Heuristics for making hash-index.
-
- Version 2.7.15
- ==============
-
- * FIXED: Embedding: the kernel now not longer gives up if it cannot
- find the Prolog home directory. feature(home, Home) will fail if
- the home could not be located.
-
- * FIXED: Configure problems related to -l[n]curses, etc.
-
- * FIXED: retractall(Module:Head(+Arg, ...)) (i.e. explicit module and
- instantiated first argument).
-
- * ADDED: atom_prefix(+Atom, +Prefix): test of Prefix is a prefix
- of Atom.
-
- * FIXED: Bug in Unify between non-tagged and tagged integer.
-
- * FIXED: Bugs in configure, both improper test of double alignment
- and improper testing for the cursus libraries. Thanks to
- Masafumi Nakane.
-
- * IMPROVED: Moved source_file/2 to foreign language to exploit the
- kernel-maintained database for enumerating the predicates loaded
- from a sourcefile.
-
- * MODIFIED: prolog_trace_interception/3 now has 4 arguments.
-
- * ADDED: Support for tracing the cut in the source-level debugger.
-
- * ADDED: Support for `break-points' to the debugger.
-
- * FIXED: Protocol to include the prompt in the protocol.
-
- * ADDED: clause_property(ClauseRef, fact). Used by source-level tracer.
-
- * ADDED: Various options to prolog_frame_attribute/3 for the source-level
- tracer.
-
- * FIXED: allow for tracing the unify-port of a fact.
-
- * ADDED: prolog_frame_attribute(Frame, argument(N), Arg) to read
- bindings from a stack-frame.
-
- * ADDED: Various options to plld, the standalone executable linker.
-
- * IMPROVED: (if->then;else) to generate tail-recursion code for the
- `then' part.
-
- * ADDED: $clause_position/3 and prolog_frame_attribute(Frame, pc, PC).
- First steps for a source-code debugger.
-
- * IMPROVED: Clause-representation to delete subclauses member, which
- proved obsolete using the current system. Added UNIT_CLAUSE flag
- to the clause's flags to achieve the same support for the decompiler.
-
- * FIXED: handling of the stream user_error by other predicates than
- format/[1-3]. Also, using output from write/2, etc. to unbuffered
- streams like user_error is now buffered in 256 byte-blocks, but
- guaranteed to be flushed after the write operation completes,
- resulting in fewer calls to write() and therefore generally better
- performance.
-
- Version 2.7.14
- ==============
-
- * FIXED: Win32 shell/1 implementation has changed radically, not
- using threads anymore. This hopefully fixes shell/1 on all
- platforms. The old version started a thread to wait for the
- process, while the main thread continued processing windows
- messages. The new version loops through PeekMessage, GetExitCodeProcess
- and Sleep, processing messages and waiting in the same (main)
- thread.
-
- * FIXED: reentrance problem in Sgetc() (low level fetch for character),
- upsetting the tracer sometimes when using XPCE.
-
- <this version was put on the ftp server Sep 6>
-
- * FIXED: current_stream/3 failed to properly enumerate the streams.
- Thanks to Robert van Engelen.
-
- * MODIFIED: ensure_loaded and use_module now load if the file has
- been changed since it was last loaded, and not only if it was not
- loaded before.
-
- * ADDED: load_files/2 to load files with various options (including
- silent loading). The undocumented $consult_file/2 has gone!
-
- * INSTALL: Win32: nice looking installation procedure, based on the
- WISE installation expert package.
-
- * ADDED: A *-> B ; C (softcut).
-
- * FIXED: Random generation for machines that use rand(). Still
- poor, but then this function is bad. Maybe use our own someday.
-
- * ADDED: Win32: console support for variable-pitch fonts and user
- selection of fonts.
-
- * FIXED: <String> =.. X, found by Robert van Engelen.
-
- Version 2.7.13
- ==============
-
- * FIXED: prolog_frame_attribute/3 to include the arguments in the
- goal. Found by Andreas Schlemminger.
-
- * FIXED: listing (clause/2) for predicates holding if->then;else or
- a;b in their body. Found by Andreas Schlemminger.
-
- * FIXED: shell/1 for Windows platforms (waited almost indefinitely
- before executing the program).
-
- * ADDED: plregtry.dll and registry.dll, providing access to the
- Win32 registry database.
-
- * ADDED: setting up a DDE server for better interaction with the
- Windows 95 shell (direct edit and consult from the explorer).
-
- Version 2.7.13 (ALPHA)
- ======================
-
- * ADDED: mode update for open/[3,4] to write at any location in an
- existing file.
-
- Version 2.7.12
- ==============
-
- * FIXED: behaviour of the tracer. Notably included missing fail-ports
- from the trace. Also fixed the box-counts for the profiler.
-
- * ADDED: expand_term/2 now first tries term_expansion/2 in the module
- that is being loaded. After that it tries the module user.
-
- * FIXED: Various improvements to the explain facility, notably much
- better location of predicate cross-references.
-
- Version 2.7.11
- ==============
-
- * MODIFIED: feature(version, Version) and PLVERSION are now numeric.
-
- * FIXED: reporting out-of-stack now never calls the Prolog exception
- handler to avoid a real crash.
-
- * ADDED: Syntax for maintaining source-location inside term-expansion.
- If a term of the form $source_location(File, Line):Clause is found,
- not the current, but the given location will be recorded with the
- clause)
-
- Version 2.7.10
- ==============
-
- * PORT: More changes to PL_unify_term() by Franklin Chen. Now really
- compiles on MkLinux.
-
- * FIXED: retract/1 once more. Now tested on all combinations of
- (non-)unit-clause and with(out) module specifier.
-
- Version 2.7.9
- =============
-
- * FIXED: interaction between tracer and garbage-collector, sometimes
- causing an assertion-failure in the garbage collector when tracing.
- Reported by Lourens van der Meij.
-
- * CHANGED: flag/3 now handles full 32-bit integers and double
- float values. Old version was limited to tagged ints and didn't
- do floats.
-
- * PORT: Rewrote PL_unify_term() to avoid using va_list *. May or
- may not help. Problem arises on the PowerMac version of Linux
- when compiling pl-fli.c. Reported by Franklin Chen.
-
- * PORT: Portability patches for AIX 3.2/4.1: avoid name-clash with
- hz and fid_t. Contributed by Kay Roemer.
-
- * FIXED: documentation of PL_unify_list() interface function.
-
- * FIXED: name/2 to behave correctly in the tracer. This problem
- may appear with more foreign predicates and maybe requires a
- more fundamental solution. Reported by Chan Kam Fai.
-
- * FIXED: retract/1 on non-unit-clauses. Thanks to Liviu Badea.
-
- Version 2.7.8
- =============
-
- * Some fixes to the Makefile. No functional change.
-
- Version 2.7.7
- =============
-
- * DOC: Added documentation for PL_unify_term(), making its specs
- `official'.
-
- * ADDED: PL_query(PL_QUERY_VERSION) to find the version of Prolog
- running. Used by plwin.exe to display the correct version in the
- window titlebar.
-
- * WIN32 Process creation: added win_exec/2 and changed shell/1 such
- that shell('<Command> &') behaves as win_exec(<Command>, normal).
-
- * WIN32 DDE: Added dde_poke/[3,4] to support DDE poke operation required to
- communicate with the sybase database for Windows. MODIFIED
- dde_request/3 to return a string object rather then an atom to
- avoid filling the atom-space.
-
- * WIN32: For filenames, ~ is expanded to %home%. When not present,
- %homedrive%%homepath% is used, which expands to NT's notion of the
- home directory. Finally, '/' is used as fallback.
-
- * MODIFIED: Changed directory structure of make rt-install to be
- the same as normal installation.
-
- * FIXED: Installation on Pentium Pro: bad detection of canonical
- system type by autoconf's config.sub. Updated configure.in to
- use autoconf 2.10.
-
- * FIXED: Backtracking on floats and large integers appearing in the head.
- The VM instructions H_FLOAT and H_INTEGERS handling these didn't
- trail the argument. Bug introduced in 2.7.0. Thanks to Peter
- Terptra for reporting.
-
- Version 2.7.6
- =============
-
- * MODIFIED: Added some more support for very deeply nested terms on
- the last arguments (long lists beeing one of them) by introducing
- a new compilation schema for such terms. Also modified numbervars/4
- to exploit right-recursion of terms.
-
- * MODIFIED: Argument-stack default-limit changed from 8 KB to 1 MB
- for machines with dynamic stacks. 16 KB for others. This limits
- most of all the depth of terms handled by assert/retract.
-
- * FIXED: Emacs-interaction bug using history. Thanks to Dave Moffat.
-
- * FIXED: decompilation (retract, listing, etc.) for predicates with
- 0 arguments. Reported by Dave Moffat.
-
- * FIXED: configuration for system where readline requires -lcurses
- rather then -ltermcap (and the latter is not present).
-
- Version 2.7.5
- =============
-
- * FIXED: typo in float <-> long conversion problem.
-
- * FIXED: plld now passes -D* to the compiler rather then the linker.
-
- Version 2.7.4
- =============
-
- * FIXED: handling of floating-point conversion to integers on machines
- raising SIGPFE on l = (long)f when f is out of the long range. Thanks
- to Sven.Hader@Informatik.TU-Chemnitz.DE (Sven Hader). The problem
- appears at least on Linux running on a Pentium.
-
- * MODIFIED: Added -F file flag to select from multiple initialisation
- scripts, just like -f file. Old versions only loaded plrc. The
- new version by default loads <program>.rc. -F none stops loading
- this file.
-
- * FIXED: plld: gave error code 1 (always). Added various flags: -v
- -help, -pl. Updated manuals
-
- * FIXED: PL_next_solution() detection of non-deterministic success
- (reported deterministic for actually non-deterministic goals).
-
- * ADDED: For XPCE users: nice graphical frontend for the online help
- functions. Working on much better Prolog mode for PceEmacs.
-
- * PORTABILITY: Removed void * arithmetic in pl-setup.c, removed
- a couple of other non-strict-ansi things there. Added configure
- for alloca(). Reported to compile using IRIX 5.3 native compiler
- now.
-
- * FIXED: Sclose() flushed write-buffer for read-only streams.
-
- * ADDED: read_term/[2,3]: reading with various options
-
- * FIXED: copy_term/2: handling of combination of ground compound
- terms and shared variables.
-
- * FIXED: PL_next_solution() detection of determistic success.
-
- * ADDED: concat_atom/3 for concatenating multiple atoms with a separator.
-
- * FIXED: Online manual generation for dynamic/1 and friends. Parser
- now deletes \verb from summaries.
-
- * FIXED: $xr_member (underlying explain/[1,2]) for clauses containing
- string objects (crashed). Improved various details to explain/[1,2]
-
- * MODIFIED: Quoted writing of an invalid float yields '$Infinity' or '$NaN',
- unquoted Infinity or NaN.
-
- Version 2.7.3
- =============
-
- * FIXED: ?- expand_term(A,B), reported by Fergus Henderson.
-
- * FIXED: cleanup after calling Prolog-defined arithmetic functions
- (caused a crash when two arithmetic functions are called in the
- same context).
-
- * Renamed PL_reinit_hook() to PL_initialise_hook(), which reflects
- more the current function. Use this to register the readline
- interface, so it is available while loading .plrc. Se also
- pl-extend.c and its public copy stub.c.
-
- Version 2.7.2
- =============
-
- * ADDED: features `debug_on_error' and `report_error'
-
- * ISO: If a predicate has no clauses and is defined either dynamic,
- multifile or discontiguous, it is considered defined. This used to
- hold only for dynamic predicates.
-
- Version 2.7.1
- =============
-
- * FIXED: Signal/readline/abort interfaces for the Win32 versions, so
- signals are handled correctly again and readline-based input handling
- works.
-
- * FIXED: bug in setup of memory-base pointers, causing all versions
- to fail who allocate memory higher than 128MB, which includes the
- win32 version under win32s (Windows 3.1)
-
- * FIXED: ar/ranlib configuration (notably for BSD systems, such as
- SunOs 4.1).
-
- * FIXED: do not load readline interface if the input is not a terminal.
- This bug prevented constructs in shell-scripts such as pl << _EOS_ ...
-
- Version 2.7.0
- =============
-
- * FIXED: HPUX compilation thanks to Gordon Streeter.
-
- * WIN32: The kernel is now in libpl.dll, which comes with two toplevel
- drivers: plcon.exe for a standard IO version and plwin.exe for the
- windows based version. New directory embed with the sources of
- both toplevels.
-
- * FIXED: memory leak after assert/retract of code holding floats,
- 32-bit integers or strings (not lists of char-codes). Also
- provides more compact code for floats and large integers
- (both small and large integers require 2 words, doubles 3 words).
-
- * IMPROVED: More compact representation of compiled floats, long
- integers and strings.
-
- * MODIFIED: Complete rewrite of the internal datastructures. The
- aim is to avoid mixing pointers and unsigned longs on the stacks
- and thus remove the various assumptions on the memory model underlying
- the prior versions. See pl-data.h for details.
-
- * IMPROVED: Lifted the maximum number of variables in a clause from
- 256 to 65536, maximum arity of predicates from 128 to 1024. Both
- numbers are fairly arbitrary and can be raised further at the cost
- of wasting a little more memory.
-
- Version 2.6.0
- =============
-
- * ADDED: plld and manpage for creating embedded executables.
-
- * FIXED: flush output of terminal streams while halting.
-
- * ADDED: option stand_alone for qsave_program to create stand-alone
- executables!
-
- * INSTALL: The executables are now installed in $(PLBASE)/bin/$(ARCH),
- i.e. using a different directory for each platform, so multiple
- platforms are supported more easily.
-
- * MODIFIED: Drastic reorganisation of arithmetic handling:
-
- - All arithmetic is now handled using 32-bit longs and 64-bit
- doubles.
-
- - Smaller integers (within the range described by the features
- min_tagged_integer ... max_tagged_integer) are represented
- internally as tagged integers. Larger integers and doubles
- are represented as `indirect data'.
-
- - A generic representation for `indirect', covering uniform
- handling of them by the virtual machine, unify and garbage
- collector. This deals with strings, doubles and `bignums'.
-
- - New interface between the arithmetic functions and the
- arithmetic predicates (is/2, >/2, etc.) as well as their
- virtual machine instructions. This new interface is faster.
- and avoids unnecessary type-conversions.
-
- - Augmented/renumbered the virtual machine instructions, making
- old saved states worthless.
-
- - Fixed a couple of functions translating between floats and
- integers: integer/1, ceil/1, floor/1, float_integer_part/1,
- truncate/1, etc. for handling large numbers correctly.
-
- - Added the feature float_format to define how floats are
- printed by write/1, print/1, etc.
-
- * MODIFIED: Disconnected readline and Win32 I/O window interface to
- a separate module. This is a necessary precondition to arrive at
- a modular and embedible Prolog engine for Win32. See pl-rl.c
-
- * FIXED: unknown/2 (reporting instantiation fault).
-
- Version 2.5.6
- =============
-
- * FIXED: ceil/1, floor/1 and integer/1 to handle large floating point
- numbers correctly.
-
- * MODIFIED: write and friends to print floating point numbers using
- the `%g' format by default, printing large floats as -for example-
- 3e20. Use format with the ~f option to format floats as you please.
-
- * FIXED: on some machines <assert.h> requires <stdio.h> to be included.
- configure now checks for this.
-
- * FIXED: .qlf file-magic verification.
-
- * FIXED: Some minor portability problems: test for CC supporting -c -o
- combination, solaris prototypes for random and srandom added, changed
- system parameter detection for file-table-size and page-size to use
- sysconf() when available. Compilation is now silent on solaris 2.5,
- except for a number of `might not be initialised' warnings in pl-wam.c
- that aren't correct (also, these are not reported by other versions
- of gcc).
-
- Version 2.5.5
- =============
-
- * FIXED: Important bug in =@=, also used by bagof/setof, leading to
- crashes on some structures and failure on structural equal terms
- on others.
-
- * FIXED: Crash in the tracer under some circumstances, reported
- by Michael Schulz.
-
- * FIXED: loading Quick Load Files that do not contain modules.
-
- Version 2.5.4
- =============
-
- * FIXED: read/1 for reading negative floating point numbers (2.5.x bug),
- thanks to Bill Jones.
-
- * FIXED: read/1, etc. for reading a single variable. Found by Luu Tran.
-
- * FIXED: DCG expansion error found by Keith Whitwell.
-
-
- Version 2.5.3
- =============
-
- * ADDED: ISO at_end_of_stream/[0,1] and peek_byte/[1,2].
-
- * Fixed and faster nth0/3 and nth1/3 implementations by Martin Jansche.
-
- * New pl(1) manual page by Martin Jansche. Thanks.
-
- * PORT: Ron Ferguson mailed me a couple of fixes for the NeXT machine,
- using release 2 of the C-compiler from the standard development system.
- Thanks.
-
- * FIXED: decompilation (listing, retract, etc.) for clauses using the
- new (2.5.x) A_REAL instruction.
-
- * FIXED: \=/2 and recorded/3 for handling shared variables. Found
- by Joerg Garbers.
-
- * ADDED: edit definition for emacsclient(1).
-
- * Fixed unify (=/2) for unification of two floats. Reported by Dave
- Moffat.
-
- Version 2.5.2
- =============
-
- * FIXED: PL_retry() and friends were lacking from the new SWI-Prolog.h
-
- * FIXED: PL_cons_functor() and PL_cons_list(), also fixing variable
- handling in bagof/setof. Thanks to Khanh Doan for reporting.
-
- * ADDED: string_concat/3 with same semantics as concat/3, but unbound
- will be unified with a string object.
-
- * ADDED: rl_read_init_file(+File) and rl_add_history(+Line) for better
- readline interaction. Added readline.3 to the standard installed
- manual set.
-
- * ADDED: file_name_extension/3 to reason about filename extensions in
- a machine-independent manner. Fixes Win32 associations if the filename
- has uppercase extension.
-
- Version 2.5.1 (released for Win32 only)
- =======================================
-
- * FIXED: Stack expansion for some foreign predicates using the local
- stack as temporary area for machines with exception-based stack-overflow
- handling that do not provide the address of the segmentation fault to
- the handler (Win32, Linux).
-
- * FIXED: Linux: repeated handling of the sequence Control-C, abort.
-
- * FIXED: Crash after the system has ran out of some stacks on machines
- with exception-based stack-overflow handling and POSIX signals.
- Solaris, Linux and Win32 are the examples I know of.
-
- * FIXED: CVT_NUMBER and CVT_ATOMIC constants in SWI-Prolog.h,
- breaking name(+Float, -Chars).
-
- * FIXED: plus/3 for +, -, + instantiation (2.5.0 introduced typo).
-
- * FIXED: prototype declaraction reported by Martin Jansche.
-
- Version 2.5.0
- =============
-
- * Added features `trace_gc' and `gc'.
-
- * Added `pl -arch' to get the architecture identifier easily for
- installation and makefiles
-
- * New implementation of copy_term/2 that shares common compound
- sub-terms.
-
- * Totally new foreign language interface using `term-references' to
- allow for garbage collection and stack-shifts with active foreign
- code. Ported all foreign predicates to the new interface. This
- interface also allows for generating multiple alternatives for
- a Prolog goal from C.
-
- For compatibility with old foreign code, see README.oldforeign.
-
- * FIXED: optimised compilation of A is X (i.e. second argument is
- a variable).
-
- * COMPILER: improved compilation of floating-point arithmetic using
- -O (optimised), avoiding unnecessary copying of floating point
- numbers to the global stack.
-
- ****************************************************************
- INCOMPATIBLE FOREIGN LANGUAGE INTERFACE
- ****************************************************************
-
- Version 2.1.15
- ==============
-
- * FIXED: read/1 to push the load context when reading end-of-file, so
- the following works:
-
- term_expansion(end_of_file, end_of_file) :-
- prolog_load_context(file, Path),
- format('Finished loading ~w~n', [Path]).
-
- * FIXED: abolish/2 on imported procedures. Reported by Peter Barth.
-
- Version 2.1.14
- ==============
-
- * DISTRIBUTION: Removed various out-of-date files from the distribution:
- Makefile.win, Makefile.dos, etc.
-
- * WIN32S: Fixed problem in the garbage collector.
-
- * WIN32: Improved cputime for NT ('95 and win32s use the old code).
-
- * MANUAL: Martin Jansche <martin@pc03.idf.uni-heidelberg.de> has send me
- patches for the manual, fixing many smaller and bigger mistakes in it.
- Thanks!
-
- * DEBUG: Added stuff for debugging for different memory models on Unix
- machines with an mmap() that can map memory at the addresses normally
- used by the target machine. See morecore.c
-
- Version 2.1.13
- ==============
-
- * WIN32: Fixed error reporting of shell/1.
-
- * FIXED: added a flush() after completing the user-query. This gives
- better output for ?- write(hello).
-
- * FIXED: file-name conversion cache management. This cache is used
- by absolute_file_name/3.
-
- Version 2.1.12
- ==============
-
- * Most of these fixed after comments from David Plummer. Thanks.
-
- * FIXED: displayq for ','(...)
-
- * FIXED: read/1 and friends to handle {}(..) and [](...) correctly.
-
- * FIXED: format/[2,3] to be able to write unlimited-length output,
- provided there are no `pending' ~t's.
-
- * COMPAT: absolute_file/3 to accept list of access-modes
-
- * MODIFIED: access_file/2 to succeed on write and append mode if the
- file does not exist, but the directory can be written.
-
- * FIXED: unification order in translating grammar --> {goal}. Noted
- by Andreas Steiner.
-
- * FIXED: Temporary-buffer management in Svfprintf() and friends.
-
- Version 2.1.11
- ==============
-
- * FIXED: functor(X, 8, 0) to yield X = 8.
-
- * DELETED: library_directory(.). Gives too much problems because the
- system picks wrong files or directories.
-
- Version 2.1.10
- ==============
-
- * ISO: added compliant open/4 predicate.
-
- * Moved all printing of the system (banner, prompt and warnings to
- use user_error (=stderr) rather than user_output (=stdout), so
- it becomes easier to use Prolog's standard output. Stderr is
- unbuffered, several predicates that will output more than one
- character now use a `temporary buffer' to reduce IO-load.
-
- * ISO: Added arithmetic functions: rem/2, ** (= ^), ceiling (= ceil),
- float/1, float_fractional_part/1, float_integer_part/1, truncate/1,
- sign/1 and round/1 (= integer/1).
-
- * ISO Syntax: Changed quoted atom and string syntax to support character
- escapes, broken lines, etc. These changes can be switched off
- using ?- set_feature(character_escapes, false). for backward
- compatibility.
-
- Also, 0b110, 0xa2 and 0o70 (binary, hexadecimal and octal) number
- representations are now recognised.
-
- * ISO: Added features bounded, integer_rounding_function, max_arity.
-
- * WIN32: Various changes to the console: use standard colours and
- font, allow for changing colours. Bind Control-Z to end-of-file
- (alternative for Control-D, which is still valid).
-
- * WIN32: `pl state.qlx' now assumes state.qlx is the result of a
- qsave_program/[1,2] and automatically loads the state. This
- allows for associating states with the emulator. Also, pl file.pl
- will automatically chdir/1 to the directory containing the file
- and load the file before entering the toplevel.
-
- * WIN32: Fixed some filename case problems: expand_file_name/2 now
- works case-insensitive. Comparing files for sorting is done case
- insenstive.
-
- * WIN32: Command-line breaking now handles "quoted arguments". Only
- double quotes and no escape (I don't know the Windows'95 escape
- conventions).
-
- * WIN32: Fixed filename completion from console window.
-
- * INSTALL: Fixed detection of non-gnu/gnu make
-
- * FIXED: use_module/1, etc. to import predicates exported using the
- export/1 directive instead of the module/2 directive.
-
- Version 2.1.9
- =============
-
- * FIXED: Updated stack-shifter code for the changed layout of the
- environment-stack frames. This bug prevented pl-gc.c to compile
- on machines having no virtual-memory based stack allocation.
-
- Version 2.1.8
- =============
-
- * ADDED: check in exit code that removes possibly incomplete .qlf and
- bootfiles if an error occurred while building the file.
-
- * FIXED: WIN32 tmp_file/2. This fixes help/1.
-
- * FIXED: configure for users of a shell that doesn't export $PWD and
- the system chooses the install-sh script.
-
- Version 2.1.7
- =============
-
- * FIXED: management of clause index-table. Old code lead to indefinite
- growing of these tables with repetative assert/retract
-
- * ADDED: Improved dirty-management on clause indexing system to improve
- the performance on retract from hashed dynamic predicates.
-
- * ADDED: absolute_file_name/3: options file_type, file_errors and
- solutions for compatibility.
-
- * Win32: compiled (with small updates) for Win32
-
- * ADDED: Implemented open_null_stream/1 by defining a null-stream in
- SWI-Prologs stream-i/o package to avoid the /dev/null dependency.
-
- * ADDED: Saving current operator declarations with qsave_program/[1,2].
-
- * FIXED: Garbage-collector error.
-
- * FIXED: predicate-reference count problem
-
- * ADDED: style_check(+dynamic) to report on manipulation of predicates
- that are active in the interpreter.
-
- Version 2.1.6
- =============
-
- * INSTALL: installs pl in the SWI-Prolog tree and just creates a link
- from the binary directory. Makes it easier to move and redistribute
- the SWI-Prolog binaries.
-
- * CHPL.c: fixed conflict for basename()
-
- * FIXED: file-searching cache returning alternate answers in different
- order.
-
- Version 2.1.5
- =============
-
- * ADDED: notrace(+Goal) to run Goal invisible to the debugger.
-
- * ADDED: open_shared_object/3 to be able to pass flags to dlopen().
-
- * CLAUSE INDEXING: version 2.1.5 provides hashing to speed up first
- argument indexing. Numerous changes had to be made to realise this:
- Indirection in the clause chain of predicates, implementation of a
- lazy automatic system to guess the proper way to index a predicate,
- a new clause-reference count system (avoiding problems with manipulation
- of `active' predicates. The representation of predicate and clauses
- has changed in various ways.
-
- * INSTALL: Changed various things to the configure options and detection,
- to the defaults make more sence. Upgraded to autoconf 2.4, fixed for
- cross-compilation.
-
- * PORT: Fixed various things for the Linux/ELF port. Tested on
- Linux 1.2.13 running libc-5.0.9. Compiled with gcc-2.7.0.
-
- * PERFORMANCE: Implemented automatic rehashing of all (previously)
- fixed-size hash-tables. Prevents performance degradation on very
- large programs.
-
- * FIXED: profile/3 problem (leading to crashes).
-
- * FIXED: pl -O bug: trailing of is/2 was not handled properly.
-
- Version 2.1.4
- =============
-
- * MODIFIED: Changed definition of absolute_file_name/2. Moved
- absolute_file_name/3 from library(quintus) to a built-in predicate.
-
- * ADDED: file_directory_name/2 and file_base_name/2.
-
- * ADDED: end_of_file is now passed to term_expansion/2.
-
- * DOC: Many updates.
-
- * FIXED: read/1 for foo.%comment (i.e. no space between the . and the
- comment). Note that foo./*comment*/ doesn't work as this will be
- tokenised as `foo', `./*', `comment', `*/'.
-
- * ADDED: lazy recomputation of clause indexing. This notably speeds
- up loading .qlf and bootfiles.
-
- * ADDED: hash_term/2 for advanced indexing of databases.
-
- * ADDED: setting file_search_path through the command line using:
- pl -p mydir=/foo/bar.
-
- * FIXED: Semantics of ensure_loaded/1 if the file is already loaded,
- combined with the module system. See ensure_loaded/1.
-
- * FIXED: Grammar rule compiler's handling of non-proper lists in the
- head or body (lists ending in a variable). Lists of more then one
- element are now translated into append/3. The following now compiles
- ok: string([H|T]) --> [H|T].
-
- * MODIFIED: term_to_atom/2 and atom_to_term/3 to fail silently on a
- syntax error. Both predicates now also accept a string in the place
- of the atom to parse strings: term_to_atom(X, "foo(bar)") works as
- expected.
-
- * ADDED: `swi' and `foreign' aliases to file_search_path/2.
-
- * MODIFIED: Grammar rule translator now uses 'C'/3 instead of '$char'/3
- to extract the head. Compatibility.
-
- * MODIFIED: at_initialisation/1 is now called at_initialization/1.
-
- * INSTALL: Fixed Makefile and configure to be able to build the system
- for multiple platforms.
-
- * ADDED: Infra-structure for making portable saved-states (equivalents
- of boot files):
-
- + initialization/1 (goals to run at initialization)
- + volatile/1 (predicates for which not to save clauses)
- + require/1 (define we require this predicate)
- + autoload/[0,1] (autoload needed things now)
- + qsave_program/[1,2] (make a quick-loadable state)
-
- * ADDED: compound/1 to test for compound terms.
-
- * FIXED: compilation of ``foo:Head :- Body'' to be equivalent to
- foo:(Head :- Body).
-
- * FIXED: problem in read/1 and number_chars/2 that may have lead to
- garbage collection errors.
-
- * FIXED: setarg/3 integrated in the trail-system. Removes its
- choicepoint and ensures data consistency.
-
- Version 2.1.3
- =============
-
- * ADDED: setarg/3 for extra-logical assignment to arguments of terms.
-
- * MODIFIED: PL_new_integer() now returns a floating point value if the
- argument exceeds SWI-Prolog's integer range.
-
- * ADDED: Automatically dumps the top of the runtime stack on floating
- point exceptions.
-
- * FIXED: Trap floating point exceptions for the win32 version.
-
- Version 2.1.2
- =============
-
- * FIXED: read/1 problem. Try reading just '0'. ... Reported by
- Daniela Genius.
-
- * FIXED: `toplevel' variable expansion system, leading to various strange
- behaviours in handling queries from the user. It now can also handle
- cases as:
-
- ?- X = 5.
- ?- X is $X + 1.
-
- Version 2.1.1
- =============
-
- * MODIFIED: DCG translation of free variables now calls phrase/3, which
- has been changed slightly to deal with `un-parsing'. Modification
- is probably not complete, but it fixes some problems encountered by
- Michael Boehlen.
-
- * MODIFIED: keysort/2 is now stable with regard to multiple values on
- the same key. Makes this predicate compatible with SICStus and
- Quintus.
-
- * FIXED: :- dynamic, :- multifile, :- module_transparent and
- :- discontiguous to accept Module:Name/Arity, ...
-
- * Moved call/[1..] into the compiler. call/[1..6] is removed from
- library(quintus) as it is now part of the base system. Also fail/0
- and true/0 are now handled by virtual machine instructions.
-
- * Upgrade to autoconf 2.3, fixed usage of `tr' for Solaris 2.x and
- with that the configuration of --enable-shared.
-
- * FIXED: number_chars/2 and name/2 now handle floating point numbers.
-
- * FIXED: interaction between chdir/1 and absolute_file_name/2.
-
- * FIXED: format('~*c', [10,45]) (or more in general, providing an argument
- to ~c to print the character multiple times). Thanks to Michael Boehlen.
-
- * FIXED: PrologPrompt() to allow reading standard input from the -g and/or
- -t goal options.
-
- Version 2.1.0
- ==============
-
- * Added facilities to allow for embedding SWI-Prolog in C applications.
-
- * Fixed semantics of the cut in toplevel queries by compiling the query
- instead of using meta-call.
-
- * Fixed bagof(A, member([B, C]), L) to yield L = [B,C] instead of making
- new variables.
-
- * Fixed typo in dde.pl (reported by Thiebaut Moeglin)
-
- * Integration of NeXT patches from Thomas Hoppe (hoppet@cs.tu-berlin.de).
- Probably still not 100% ok, but should be closer now.
-
- * Fixed XPCE event dispatching for pl -tty
-
- * PL_univg() C-interface function added for supporting XPCE > 4.8.10
- with better interface performance.
-
- * Fixed operator precedence problem (reported by Dave Moffat)
-
- Version 2.0.9
- =============
-
- * ADDED: HPUX interface for shared libraries, but a HPUX guru should
- fix the import/export details (line was too slow to browse to lots
- of manual pages).
-
- * FIXED: pl-incl.h typo (breaks IRIX 5.3 port and propably others)
-
- * FIXED: HPUX detection of mmap()'able stacks fixed.
-
- * FIXED: generation of include/SWI-Exports, the AIX export declaration
- file.
-
- Version 2.0.8
- =============
-
- * FIXED: loading shared objects using dlopen() for solaris 2.x
-
- * FIXED: shlib.pl current_foreign_library/2 administration.
-
- Version 2.0.7
- =============
-
- * FIXED: compilation (boot and .qlf) now donot look for compiled
- (.qlf) files.
-
- * CHANGED: Default goal writing the banner is now in the flag
- $banner_goal (used by XPCE as a shared library).
-
-
- Version 2.0.6
- =============
-
- * CHANGED: retractall/1 implementation is now compatible to Quintus,
- avoiding the hacky redefinition in library(quintus.pl). The difference
- is that now the argument will only be matched against the clause-head.
- on a match the clause will be removed, regardless of its body. Makes
- no difference for retractall on facts, but does make a difference on
- clauses with a non-just-true body. retractall/1 is now a deterministic
- foreign predicate that no longer decompiles the clause body, making
- it faster too.
-
- * FIXED: made .qlf files independent of the directory they where compiled.
-
- * FIXED: Path canonisation problem
-
- * FIXED: loading .qlf files holding already-defined modules
-
- * ADDED: file_search_path file-location system
-
- * ADDED: access_file(File, exists) to check for bare existence.
-
- * FIXED: Another clear_uninitialised() problem related to if-then-else
- causing garbage collector and possibly stack-shift errors. As the
- implementation is now changed radically, this problem should be gone
- forever ...
-
- * FIXED: copy_term/2. Now creates more efficient terms (less references)
- and no longer creates bad references.
-
- Version 2.0.5
- =============
-
- * MODIFIED: Replaced libc based stream IO with more general IOSTREAM
- package. Deleted folding capabilities as just about any IO device
- has these built-in these days. These changes are to facilate embedding
- in window-based environments that do not support stdio. See pl-stream.c
-
- * FIX: dwim_match/2 for single character mismatch.
-
- * ADDED: atom_chars/2, number_chars/2, atom_char/2, various new
- unix/1 arguments.
-
- Version 2.0.4
- =============
-
- * MODIFIED: Consult and friends (ensure_loaded, use_module, etc.)
- no longer change directory to the directory in which the file
- lives. As a consequence, directives have to use prolog_load_context/2
- or source_location/2 to find the context directory of the directive.
-
- consult and related directives still load relative to the directory
- in which the currently loading file lives.
-
- * Added prolog_load_context/2 to provide context for directives.
- Actually moved from library(quintus) to the boot image as the
- predicate is now necessary.
-
- * Added -DO_RUNTIME support to make a version that is more suitable
- for distribution of products: no profiling, no tracer, no readline
- and no interrupt handling. Setup using configure --enable-runtime
-
- Version 2.0.3
- =============
-
- * Fixed: loading qlf files now push the source context while running
- a directive, so source_location/2 should work while executing a
- directive from a .qlf file.
- * Fixed: recognise MAP_ANONYMOUS for configuring mmap() based stacks.
- * Added feature(dynamic_stacks, Bool) for detection of virtual memory
- based stack management.
- * Fixed feature(open_shared_object, Bool) (Michael Kauschke)
-
- Version 2.0.2
- =============
-
- * Fixed pl [options] -c file ...
- * Improved VMI implementation for (if -> then ; else), \+ and (a;b).
- Reduces overhead of these to about 1/3th.
- * Added VMI support for fast calling of foreign system predicates that
- are called with only variable arguments (i.e. `test(X) :- integer(X)'
- is optimised; `test(X) :- integer(3)' is not). Provides big speedup
- for fail, true, integer/1 (etc.), and many other commonly called
- foreign predicates.
- * Support for mmap() using MAP_ANON. Avoids a file-descriptor and hopefully
- improves portability of dynamic stacks.
- * Fix for Solaris 2.4 mmap() detection.
- * Fix: added autoconf test for using asm("nop") in pl-wam.c or use slower
- but more portable C alternative (fixes RS/6000 version)
-
- Version 2.0.1
- =============
-
- * FIX in garbage collector of 2.0.0 was only half the story. Should
- be ok now. Thanks to Thomas Hoppe for supplying me with the error
- report.
- * FIX & performance: current_functor/2 with the first argument is
- instantiated.
- * Installation: the libraries are now installed as
- $(prefix)/lib/$(PL)-$(PLVERSION). A possibly existing executable is moved
- from $(prefix)/bin/$(PL) to $(prefix)/bin/$(PL).old
-
-
- Version 2.0.0
- =============
-
- * Added `Quick Load File' compilation support. See qcompile/1 and
- qload/1. Alpha stage.
- * FIXED infrequent segmentation violation occurring on machines with
- dynamic stack management, but whose signal handler is not provided
- the address of the fault (Linux and Solaris 2 for example). The
- crash can be in various foreign predicates that use the local stack
- as scratch area.
- * Important FIX to the garbage collector. This bug may happen iff
- a garbage collection is invoked while clauses are active that have
- \+ or (a -> b ; c) constructs that are not yet active. Generally
- the problem is reported as an inconsistency in the relocation count.
- * Fix to virtual machine encoding that applies to versions compiled
- with gcc 2.x and whose text-space starts at a high address.
- * Modified absolute_file_name/2 to take specifications of the
- form absolute_file_name(library('shell.pl'), X).
- * Various fixes to the new .qlf format and support for compiliation
- of individual or combined sources into .qlf files. .qlf files may
- now be loaded as normal sourcefiles instead of only as `boot' file.
-
-
- Version 1.9.6:
- ==============
-
- * Fixed for BIG_ENDIAN machines (Intel, VAX, ...)
- * Windows version: added dde_execute/2
- * Added Quintus compatible foreign-language (C) interface.
- * Changed .qlf (former .wic) format drastically. The current
- format gives about 30% shorter files and loads twice as fast.
- * Changed basic clause representation. VM op-codes are now
- full machine words, avoiding the need for the `XR' table
- management and related indirections. Simplifies the instruction set,
- speedup for compiler, decompiler (retract, clause) and execution
- (about 10%). Enlarges program-size with about 10%.
-
-
- Version 1.9.5:
- ==============
-
- alpha-2
-
- * Fixed prolog_frame_attribute/3 for key=parent.
- * Added at_initialisation(+Goal) for initialisation hooks
- * Fixed tracer problems introduced in 1.9.5-alpla-1.
-
-
- alpha-1
-
- * Moved sourcecode administration from predicate to individual
- clauses. Purpose: better source-level debugger support, better
- handling of multifile predicates.
-
- * Recompiling files holding clauses for multifile predicates now
- works properly. The clauses of the latest loaded file will
- always be the last.
-
- * Removing a predicate from a file and recompiling the file
- now actually removes the definition from the Prolog database,
- even if you are not using modules.
-
- * Added prolog_frame_attribute(Frame, clause, ClauseRef) to get a
- reference to the currently running clause.
-
- * Added clause_property/2 to get the source information from a
- specific clause.
-
- * Compiled state (-c compilation) has changed a little. The system
- does not load old states.
-
-
- Version 1.9.4. Redefining system-predicates is no longer allowed. This
- may be overruled using :- redefine_system_predicate(+Head). Fix in
- Makefile (from Kayvan Sylvan): fixes shell syntax error make install.
- Give warning on user-files trying to load module `user' or `system'
- (this is why library(system) could not be loaded). Fixed whereis/1 to
- find locations of predicates. Fixed trace/[1,2] to avoid low-level
- errors on bad specifications. Specification now also accept the much
- more natural ?- trace(append, fail). as a shorthand for [+fail]. Added
- autoloader handling to ed/1, listing/1, spy/1 and trace/2. Manipulating
- not-yet-loaded autoload predicates will trap the autoloader. Added hook
- for help-system, so we provide a decent help-window when running under
- the XPCE graphical environment. The hook is called show_help_file/2.
- Fixed rename_file/2 (bug introduced in pl-1.9.2). Fixed versions
- Windows-specific problems. Added prolog_to_os_filename/2 to convert
- between internal and external names (DOS/Windows). Integrated the 1.9.4
- patches for the Windows version. Fixed to compile on AIX. Fixed
- compilation on some Solaris version.
-
- Version 1.9.3. Fix index/1 problem introduced in 1.9.2. Fix
- stack-expansion problem in all versions that lack hardware support for
- stack-expansion. Some cleanup in pl-gc.c to make clean compilation with
- -Wall and -DO_DEBUG possible. Regenerated common prototype file
- pl-funcs.h using mkproto tool (and some editing).
-
- Version 1.9.2. Configuration is now based on GNU's autoconf. All
- md-*.h files have been removed from the distribution. $arch/2, $home/1
- and $version/1 have been replaced by feature/2. A predicate read_link/3
- has been added to read symbolic links. Installation is tested on SunOs
- 4.1.3, Solaris 2.3 and Linux 1.0.9 with readline 2.0.3.
-
- Version 1.9.1. Added: Windows DDE interface, Added Unix/System-V (?)
- interface to dlopen() and friends to access shared objects dynamically.
-
- Version 1.9.0. Incorporation of various ports: md-netbsd.h, md-mswin.h
- and md-msdos.h. There is a binary distribution for Windows in
- win-pl.tgz of the main ftp server (swi.psy.uva.nl). The DOS and Windows
- versions are created using the WATCOM-C/32 toolkit.
-
-
- =======================================================================
- Version 1.8.12. Fixed tracer option `f' (fail) used on the exit port of
- a goal. Thanks to Thomas Hoppe.
-
- Version 1.8.8. Fix in the parser to avoid some bad syntax-error
- messages. Also fixed spurious crashes trying to read bad-syntax-terms
- of the form ?- atom,.
-
- New in the quintus.pl library: initialization/1, random/3, numbervars/3
- and absolute_file_name/3.
-
- Version 1.8.7 includes the catch/throw-like control structures
- block(+Label, +Goal, -Rval), fail(+Label), exit(+Label, +Rval) and
- !(+Label). Also new is explain(+Anything) which will try to tell you a
- lot of what the system knows about the term you entered. Additions and
- suggesions are welcome. Also new: library(bim): A partial Prolog-by-BIM
- (tm) compatibility package by Henk Vandecasteele. Thanks.
-
- Further fixes:
-
- * Bug in detecting stack-overflow for the PC/linux version.
- * Handling of SWI_HOME_DIR (fixes installation problem for
- XPCE/SWI-Prolog).
- * atom_length/2: give warning (instead of crash) on invalid
- data-type (e.g. unbound, term).
- * nth_clause/3: Removed errornous warning when cut-off and
- fixed returning 0-reference for defined predicates without
- clauses.
-
- Version 1.8.6 defines phrase/[2,3] for accessing grammar rules and fixes
- name/2 for numbers outside the integer range (yielding a float). A
- predicate nth_clause/3 is added to provide access to specific clauses of
- predicates. xmalloc(), xrealloc() are added to fix some problems when
- linking with gnu-libraries.
-
- Version 1.8.5 contains a few fixes for the SunOs-4/gcc-2.5 combination.
- DONOT USE GCC-2.5.[123] as the optimiser appears broken. gcc-2.5.4 is
- ok again.
-
- Version 1.8.4 fixes =@=/2, contains a more logical form of arg/3, fixes
- passing empty-string arguments from the Prolog command-line and fixes
- some things for old non-ansi compilers. There are some extensions to
- the quintus.pl compatibility library.
-
- Version 1.8.3 Fixes some more readline problems having to do with
- running SWI-Prolog as an inferior process under EMACS.
-
- Version 1.8.2 fixes some serious problems in the tracer intoduced by
- more global changes in 1.8.0.
-
- Version 1.8.1 fixes load_foreign for both SunOs 4.1.3 and PC/Linux.
- Extensive use of the stat(2) system call is reduced with some changes to
- the file administration. This speeds up loading many small files by an
- incredible amount, notably when reading over a (slow) network.
-
- The manual is regenerated. There are not many changes, but the
- PostScript files in these archives are totally different as we upgrated
- LaTeX and dvips. Therefore the patch file **diff-1.8.0-1.8.1** does
- *not* include the patches to the PostScript manual.
-
- Version 1.8.0 includes a stack shifter, enabling dynamic stacks for
- machines that do not offer hardware support by providing suitable access
- to the virtual memory management. Fixed a bug in concat/3.
- expand_file/2 is now sensitive to fileerrors/2 while expanding $var or
- ~user. More bugfixes to the readline interface. Manual page
- contributed by Dave Sherrat. RS6000 port no longer uses -lbsd and
- compiles on gcc.
-
- ================================================================
- Version 1.7.2 should compile on Solaris 2.2 using gcc 2.4.5. It fixes
- the usual couple of portability problems, the terminal interface when
- connected to the XPCE graphics library. It ads line_count to
- predicate_property to support a future graphical debugging tool.
-
- Version 1.7.1 fixes a very serious memory allocation violation in the
- connection to the readline library. Make sure to update from 1.7.0!
-
- Version 1.7.0 contains a version linked with the GNU readline library
- for bash/tcsh compatible line editing. The library readline is
- distributed separately and must be installed before installing prolog.
- The file readline-1.1.tar.gz contains the unmodified GNU sources.
- librl-1.1.tar.z contains the binaries for PC/Linux.
-
- ================================================================
- Version 1.6.18 contains a fix to load_foreign/[2,5] for PC/Linux.
-
- [Version 1.6.17 has been reinstalled at Jun 1 23:16 with two prototype
- fixes and a fix to save_program/1 necessary for the RS6000.]
-
- Version 1.6.17 fixes some minor installation problems reported for
- 1.6.16. The online manual has been updated for trace/[1,2]. Callback
- of undefined Prolog-predicates from C now correctly trap the autoloader.
- Analysis of the PATH variable to find the Prolog executable has been
- fixed. Nothing serious if you have a running system!
-
- Version 1.6.16 integrates port to 386 System-V Unix made by Eric S.
- Raymond (esr@snark.thyrsus.com), who also ported the shell scripts to
- use sh rather than csh. The new predicates trace/1 and trace/2 allow
- for tracing individual predicates non-interactively.
-
- Version 1.6.15 eliminates some compiler limits, fixes a bug in
- trail-stacks management and provides a much better port for PC/Linux.
- Requires Linux kernel 99pl7 or later.
-
- Version 1.6.14 provides 8 bit character support. All characters in the
- range 128 ... 255 are treated as lowercase letters. op/3 is fixed to
- actually delete operators when priority 0 is specified.
-
- Version 1.6.13 implements standard order compatible to Quintus and
- contains a fix of the module system which broke the Quintus.pl
- replacement of retractall/1.
-
- Version 1.6.12 is te result of integrating ports to LINUX, OS/2 and
- HP/UX with the main-stream (SunOs).
-